bitkeeper revision 1.1159.1.444 (41a475d57yTjHY9plDmeNIUQ3XedOQ)
authorcl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Wed, 24 Nov 2004 11:51:49 +0000 (11:51 +0000)
committercl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Wed, 24 Nov 2004 11:51:49 +0000 (11:51 +0000)
evtchn.c:
  Check event pending after processing an IRQ since interrupts might have
  been enabled during the irq handler.

linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c

index 0d6e29f3f4a15592f666d52d2e100ece11ec658b..fc78139401eabc7e76aed5b1d7d033a8017859e2 100644 (file)
@@ -108,9 +108,12 @@ asmlinkage void evtchn_do_upcall(struct pt_regs *regs)
             l1i--;
             l1 &= ~(1 << l1i);
         
-            l2 = s->evtchn_pending[l1i] & ~s->evtchn_mask[l1i];
-            while ( (l2i = ffs(l2)) != 0 )
+            for ( ;; )
             {
+                l2 = s->evtchn_pending[l1i] & ~s->evtchn_mask[l1i];
+                l2i = ffs(l2);
+                if ( l2i == 0 )
+                    break;
                 l2i--;
                 l2 &= ~(1 << l2i);